package main

import (
	"fmt"
	"lnzw/engine/log"
	"os"
	"time"

	"github.com/fsnotify/fsnotify"
	"github.com/google/gops/agent"
	"github.com/spf13/viper"
	"go.uber.org/zap"
)

func main() {
	log.Setup()
	//配置要读取的文件
	v := viper.New()
	v.SetEnvPrefix("TEE")
	v.AutomaticEnv()
	v.BindEnv("Version", "TEE_Version")
	v.OnConfigChange(func(e fsnotify.Event) {
		fmt.Println("配置文件已修改")
		loadConfig(v)
	})
	v.WatchConfig()
	loadConfig(v)

	err := agent.Listen(agent.Options{
		Addr: "0.0.0.0:11111",
	})
	if err != nil {
		log.Error("gops启动失败", zap.Any("err", err))
	}

	go func() {
		for {
			fmt.Println("!")
		}
	}()
	time.Sleep(time.Hour)
}

func loadConfig(v *viper.Viper) {
	fmt.Println(os.Getenv("TEE_Version"))
	fmt.Println(v.GetString("Version"))
}

// type JsonConfig struct {
// 	App struct {
// 		Name        string `json:"name"`
// 		Version     string `json:"version"`
// 		Description string `json:"description"`
// 		Port        string `json:"port"`
// 	} `json:"port"`
// }

// func test2() {
// 	log.Setup()
// 	//配置要读取的文件
// 	v := viper.New()
// 	v.SetConfigFile("config/config.json")
// 	//配置要读取的类型
// 	v.SetConfigType("json")
// 	err := v.ReadInConfig()
// 	if err != nil {
// 		log.Error("读取配置文件失败", err)
// 		return
// 	}
// 	v.OnConfigChange(func(e fsnotify.Event) {
// 		log.Info("配置文件已修改")
// 		fmt.Println(e.Name)
// 		loadConfig(v)

// 	})

// 	v.WatchConfig()
// 	loadConfig(v)
// 	time.Sleep(time.Hour)
// 	// fmt.Println(v.GetString("app.name"))
// 	// fmt.Println(v.GetInt("app.port"))
// }

// func loadConfig(v *viper.Viper) {
// 	var json JsonConfig
// 	err := v.Unmarshal(&json)
// 	if err != nil {
// 		log.Error("解析配置文件失败", err)
// 		return
// 	}
// 	fmt.Printf("%+v\n", json)
// }

// type Config struct {
// 	App struct {
// 		Name      string `yaml:"name"`
// 		Copyright string `yaml:"copyright"`
// 		Version   string `yaml:"version"`
// 		License   string `yaml:"license"`
// 		Debug     string `yaml:"debug"`
// 		Env       string `yaml:"env"`
// 		Timezone  string `yaml:"timezone"`
// 		Charset   string `yaml:"charset"`
// 		Testint   int    `yaml:"testint"`
// 	} `yaml:"app"`
// }

// type PP struct {
// 	A int    `yaml:"a"`
// 	B string `yaml:"b"`
// }

func test1() {
	// log.Setup()
	// //配置要读取的文件
	// v := viper.New()
	// v.SetConfigFile("config/config.yaml")
	// //配置要读取的类型
	// v.SetConfigType("yaml")
	// err := v.ReadInConfig()
	// if err != nil {
	// 	log.Error("读取配置文件失败", err)
	// 	return
	// }
	// var pp PP
	// err = v.UnmarshalKey("app.pp", &pp)
	// if err != nil {
	// 	log.Error("解析配置文件失败", err)
	// 	return
	// }
	// fmt.Printf("%+v\n", pp)
}
